$(document).ready(function() {
    let funds = [];
    let totalPages = 1;
    let currentPage = 1;
    let itemsPerPage = 30;
    let totalRecords = 0;
    let selectedFund = null;

    // 设置默认的展示时段为"1年"
    $('#timeRange').val('1y');
    
    // 自定义alert函数
    function customAlert(message) {
        $('#customAlertMessage').text(message);
        $('#customAlertModal').modal('show');
    }

    // 标的类型和子类型的映射关系
    const fundTypeMap = {
        '1': '稳健灵活',
        '2': '黄金',
        '3': '基金',
        '4': '股票',
        '5': 'ETF'
    };

    const subTypeMap = {
        // 稳健灵活子类型 (标的类型为1)
        '1_11': '余额宝',
        '1_12': '余利宝',
        '1_13': '月利宝',
        
        // 黄金子类型 (标的类型为2)
        '2_21': '工行积存金',
        
        // 基金子类型 (标的类型为3)
        '3_31': '指数基金',
        '3_32': '偏债基金',
        '3_33': '偏股基金',
        '3_34': '全球基金',
        '3_35': '黄金基金',
        
        // 股票子类型 (标的类型为4)
        '4_41': '主板股票',
        '4_42': '创业板股票',
        '4_43': '科创板股票',
        '4_44': '北证股票',
        '4_45': '港交所股票',
        
        // ETF子类型 (标的类型为5)
        '5_51': '大盘ETF',
        '5_52': '行业ETF',
        '5_53': '策略ETF'
    };

    // 根据标的类型更新子类型选项
    function updateSubTypeOptions(type, subTypeElement) {
        subTypeElement.empty();
        subTypeElement.append('<option value="">请选择</option>');
        
        switch(type) {
            case '1': // 稳健灵活
                subTypeElement.append('<option value="11">余额宝</option>');
                subTypeElement.append('<option value="12">余利宝</option>');
                subTypeElement.append('<option value="13">月利宝</option>');
                break;
            case '2': // 黄金
                subTypeElement.append('<option value="21">工行积存金</option>');
                break;
            case '3': // 基金
                subTypeElement.append('<option value="31">指数基金</option>');
                subTypeElement.append('<option value="32">偏债基金</option>');
                subTypeElement.append('<option value="33">偏股基金</option>');
                subTypeElement.append('<option value="34">全球基金</option>');
                subTypeElement.append('<option value="35">黄金基金</option>');
                break;
            case '4': // 股票
                subTypeElement.append('<option value="41">主板股票</option>');
                subTypeElement.append('<option value="42">创业板股票</option>');
                subTypeElement.append('<option value="43">科创板股票</option>');
                subTypeElement.append('<option value="44">北证股票</option>');
                subTypeElement.append('<option value="45">港交所股票</option>');
                break;
            case '5': // ETF
                subTypeElement.append('<option value="51">大盘ETF</option>');
                subTypeElement.append('<option value="52">行业ETF</option>');
                subTypeElement.append('<option value="53">策略ETF</option>');
                break;
        }
    }

    // 绑定标的类型选择事件，用于新增和编辑模态框
    $('#addFundType').on('change', function() {
        const type = $(this).val();
        updateSubTypeOptions(type, $('#addSubType'));
        setDefaultFeesByType(type, $('#addFrontEndPurchaseFee'), $('#addBrokerCommissionRate'));
    });

    $('#editFundType').on('change', function() {
        const type = $(this).val();
        updateSubTypeOptions(type, $('#editSubType'));
        setDefaultFeesByType(type, $('#editFrontEndPurchaseFee'), $('#editBrokerCommissionRate'));
    });
    
    // 绑定标的类型选择事件，用于查询条件
    $('#searchFundType').on('change', function() {
        const type = $(this).val();
        updateSubTypeOptions(type, $('#searchSubType'));
    });

    function fetchFunds() {
        const fundCode = $('#searchFundCode').val();
        const fundName = $('#searchFundName').val();
        const fundType = $('#searchFundType').val();
        const subType = $('#searchSubType').val();
        itemsPerPage = parseInt($('#itemsPerPage').val(), 10);
        var timeRange = $('#timeRange').val();
        
        // 修复排序字段逻辑，确保使用存在的数据库字段
        var sortFieldVar;
        switch(timeRange) {
            case '1w':
                sortFieldVar = 'profit_loss_ratio_1w';
                break;
            case '1m':
                sortFieldVar = 'profit_loss_ratio_1m';
                break;
            case '3m':
                sortFieldVar = 'profit_loss_ratio_3m';
                break;
            case '6m':
                sortFieldVar = 'profit_loss_ratio_6m';
                break;
            case '1y':
                sortFieldVar = 'profit_loss_ratio_1y';
                break;
            case '2y':
                sortFieldVar = 'profit_loss_ratio_2y';
                break;
            case '3y':
                sortFieldVar = 'profit_loss_ratio_3y';
                break;
            case '5y':
                sortFieldVar = 'profit_loss_ratio_5y';
                break;
            default:
                // 默认使用1年排序
                sortFieldVar = 'profit_loss_ratio_1y';
                break;
        }
        
        const queryParams = {
            fundCode: fundCode || undefined,  // 修改为undefined而不是空字符串
            fundName: fundName || undefined,  // 修改为undefined而不是空字符串
            fundType: fundType || undefined,  // 修改为undefined而不是空字符串
            subType: subType || undefined,    // 添加子类型查询参数
            pageNo: currentPage,
            pageSize: itemsPerPage,
            sortField: sortFieldVar || undefined,  // 修改为undefined而不是空字符串
            sortOrder: 'desc'
        };

        // 清理掉值为undefined的参数
        Object.keys(queryParams).forEach(key => {
            if (queryParams[key] === undefined) {
                delete queryParams[key];
            }
        });

        showLoading(); // 显示加载状态
        
        $.ajax({
            url: `/api/funds/getFundsByConditions`,
            type: 'GET',
            data: queryParams,
            success: function(data) {
                if (!data || !data.records) {
                    console.error('Invalid data received:', data);
                    customAlert('获取数据失败，请检查输入条件或稍后重试。');
                    hideLoading();
                    return;
                }

                funds = data.records;
                totalPages = data.pages;  // 修复：使用正确的属性名
                totalRecords = data.total;
                renderFundTable(funds);
                updatePagination();
                hideLoading();
            },
            error: function(xhr, status, error) {
                console.error('Error fetching funds:', error);
                console.error('Response status:', xhr.status);
                console.error('Response text:', xhr.responseText);
                customAlert('获取数据失败，请检查网络连接或稍后重试。');
                hideLoading();
            }
        });
    }

    function renderFundTable(data) {
        const fundTableHeader = $('#fundTableHeader');
        const fundTableBody = $('#fundTableBody');

        fundTableHeader.empty();
        fundTableBody.empty();

        if (data.length > 0) {
            const headers = Object.keys(data[0]);
            const headerMapping = {
                fundCode: "代码",
                fundName: "名称",
                fundType: "标的类型",
                subType: "标的子类型",
                frontEndPurchaseFee:"前端申购费(%)",
                annualManagementFee:"运作管理费[每年](%)",
                brokerCommissionRate:"券商佣金费率[双向](%)",
                freeFeeMinDays:"免手续费最低持有天数",
                netValue: "最新单位净值",
                netValue1w: "1周前净值",
                maxNetValue1w: "1周内最大净值",
                minNetValue1w: "1周内最小净值",
                netValue1wYoy: "1周前同比",
                maxNetValue1wYoy: "1周内最大同比",
                minNetValue1wYoy: "1周内最小同比",
                profitLossRatio1w: "1周盈亏比",
                netValue1m:"1个月前单位净值",
                maxNetValue1m:"1个月内最大单位净值",
                minNetValue1m:"1个月内最小单位净值",
                netValue1mYoy: "1个月前同比",
                maxNetValue1mYoy: "1个月内最大同比",
                minNetValue1mYoy: "1个月内最小同比",
                profitLossRatio1m: "1个月盈亏比",
                netValue3m:"3个月前单位净值",
                maxNetValue3m:"3个月内最大单位净值",
                minNetValue3m:"3个月内最小单位净值",
                netValue3mYoy: "3个月前同比",
                maxNetValue3mYoy: "3个月内最大同比",
                minNetValue3mYoy: "3个月内最小同比",
                profitLossRatio3m: "3个月盈亏比",
                netValue6m:"6个月前单位净值",
                maxNetValue6m:"6个月内最大单位净值",
                minNetValue6m:"6个月内最小单位净值",
                netValue6mYoy: "6个月前同比",
                maxNetValue6mYoy: "6个月内最大同比",
                minNetValue6mYoy: "6个月内最小同比",
                profitLossRatio6m: "6个月盈亏比",
                netValue1y:"1年前单位净值",
                maxNetValue1y:"1年内最大单位净值",
                minNetValue1y:"1年内最小单位净值",
                netValue1yYoy: "1年前同比",
                maxNetValue1yYoy: "1年内最大同比",
                minNetValue1yYoy: "1年内最小同比",
                profitLossRatio1y: "1年盈亏比",
                netValue2y:"2年前单位净值",
                maxNetValue2y:"2年内最大单位净值",
                minNetValue2y:"2年内最小单位净值",
                netValue2yYoy: "2年同比",
                maxNetValue2yYoy: "2年内最大同比",
                minNetValue2yYoy: "2年内最小同比",
                profitLossRatio2y: "2年盈亏比",
                netValue3y:"3年前单位净值",
                maxNetValue3y:"3年内最大单位净值",
                minNetValue3y:"3年内最小单位净值",
                netValue3yYoy: "3年同比",
                maxNetValue3yYoy: "3年内最大同比",
                minNetValue3yYoy: "3年内最小同比",
                profitLossRatio3y: "3年盈亏比",
                netValue5y:"5年前单位净值",
                maxNetValue5y:"5年内最大单位净值",
                minNetValue5y:"5年内最小单位净值",
                netValue5yYoy: "5年同比",
                maxNetValue5yYoy: "5年内最大同比",
                minNetValue5yYoy: "5年内最小同比",
                profitLossRatio5y: "5年盈亏比",
                createdTime:"创建时间",
                updatedTime:"最后更新时间",
                status:"状态",
                Actions: "操作"
            };

            // 获取选择的时段
            const timeRange = $('#timeRange').val();

            // 根据时段过滤表头
            const filteredHeaders = headers.filter(header => {
                if (timeRange === 'all') return true; // 全部时段显示所有字段
                if (header === 'fundCode' || header === 'fundName' || header === 'fundType' || header === 'subType' || header === 'netValue') return true;

                return header.endsWith(`${timeRange}`) || header.endsWith(`${timeRange}Yoy`);
            });

            filteredHeaders.push('Actions');

            filteredHeaders.forEach(header => {

                const th = $('<th>').text(headerMapping[header] || header).addClass('custom-header');

                if (header !== 'Actions') {
                    th.css('cursor', 'pointer').attr('onclick', `sortTable('${header}')`);
                }

                fundTableHeader.append(th);
            });

            data.forEach(fund => {
                const tr = $('<tr>');
                filteredHeaders.forEach(header => {

                    const td = $('<td>');
                    if (header === 'Actions') {
                        td.html(`
                            <button class="btn btn-sm btn-warning me-2" id="edit-${fund.id}"  data-fund='${JSON.stringify(fund)}'>编辑</button>
                            <button class="btn btn-sm btn-danger me-2" id="delete-${fund.id}">删除</button>
                            <button class="btn btn-sm btn-info" id="show-${fund.id}">详情</button>
                        `);
                    } else if (header === 'status') {
                        td.text(fund[header] === '1' ? '有效' : '无效');
                    } else if (header === 'fundType') {
                        td.text(fundTypeMap[fund[header]] || '未知');
                    } else if (header === 'subType') {
                        const fullType = fund.fundType + '_' + fund.subType;
                        td.text(subTypeMap[fullType] || '未知');
                    } else if (header.endsWith('Yoy') && fund[header] !== null) {
                        td.text(fund[header] + '%'); // 修改：为同比字段追加百分号
                    } else {
                        td.text(fund[header]);
                    }
                    tr.append(td);
                });
                fundTableBody.append(tr);
            });
        } else {
            fundTableBody.html('<tr><td colspan="100" class="text-center">暂无数据</td></tr>');
        }
    }

    // 更新分页控件
    function updatePagination() {
        // 更新页码显示
        $('#currentPage').text(currentPage);
        $('#totalPages').text(totalPages);
        
        // 更新上一页和下一页按钮状态
        if (currentPage <= 1) {
            $('#prevPage').addClass('disabled');  // 修复：使用正确的ID
        } else {
            $('#prevPage').removeClass('disabled');  // 修复：使用正确的ID
        }
        
        if (currentPage >= totalPages) {
            $('#nextPage').addClass('disabled');  // 修复：使用正确的ID
        } else {
            $('#nextPage').removeClass('disabled');  // 修复：使用正确的ID
        }
    }

    function saveEditFund() {
        const fundId = $('#editFundId').val();
        const fundCode = $('#editFundCode').val();
        const fundName = $('#editFundName').val();
        const fundType = $('#editFundType').val();
        const subType = $('#editSubType').val();
        const frontEndPurchaseFee = $('#editFrontEndPurchaseFee').val();
        const annualManagementFee = $('#editAnnualManagementFee').val();
        const brokerCommissionRate = $('#editBrokerCommissionRate').val();
        const freeFeeMinDays = parseInt($('#editFreeFeeMinDays').val(), 10);

        if (fundName.trim() === '') {
            customAlert('名称不能为空');
            return;
        }

        if (fundType === '') {
            customAlert('标的类型不能为空');
            return;
        }

        if (subType === '') {
            customAlert('标的子类型不能为空');
            return;
        }

        if (isNaN(freeFeeMinDays) || freeFeeMinDays < 0) {
            customAlert('免手续费最低持有天数必须是自然数');
            return;
        }

        const updatedFund = {
            id: fundId,
            fundCode: fundCode,
            fundName: fundName,
            fundType: fundType,
            subType: subType,
            frontEndPurchaseFee: frontEndPurchaseFee ? parseFloat(frontEndPurchaseFee) : null,
            annualManagementFee: annualManagementFee ? parseFloat(annualManagementFee) : null,
            brokerCommissionRate: brokerCommissionRate ? parseFloat(brokerCommissionRate) : null,
            freeFeeMinDays: freeFeeMinDays
        };

        $.ajax({
            url: `/api/funds/updateFund`,
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(updatedFund),
            success: function(data) {
                // 通过触发事件关闭模态框
                $('#editFundModal').modal('hide');
                // 重新获取数据
                fetchFunds();
                customAlert('信息更新成功');
            },
            error: function(xhr, status, error) {
                console.error('Error updating fund:', error);
                customAlert('更新基金信息失败');
            }
        });
    }

    function handleSizeChange(newSize) {
        itemsPerPage = newSize;
        currentPage = 1; // 重置到第一页
        fetchFunds();
    }

    function handleCurrentChange(newPage) {
        // 确保页码在有效范围内
        if (newPage < 1) newPage = 1;
        if (newPage > totalPages) newPage = totalPages;
        
        if (newPage !== currentPage) {
            currentPage = newPage;
            fetchFunds();
        }
    }

    // 净值同步
    function syncNetValues() {
        // 添加确认对话框
        if (confirm('确定要拉取所有标的的最新净值数据吗？')) {
            $.ajax({
                url: '/api/funds/sync',
                type: 'POST',
                success: function(data) {
                    funds = data;
                    renderFundTable(funds);
                },
                error: function(xhr, status, error) {
                    console.error('Error syncing net values:', error); // 添加调试信息
                }
            });
        }
    }

    // 增加Excel导出功能
    function exportToExcel() {
        const fundCode = $('#searchFundCode').val();
        const fundName = $('#searchFundName').val();
        const fundType = $('#searchFundType').val();
        const subType = $('#searchSubType').val();
        var timeRange = $('#timeRange').val();
        var sortFieldVar = timeRange === 'all' ? 'profit_loss_ratio_1y' : 'profit_loss_ratio_' + timeRange;
        
        const queryParams = {
            fundCode: fundCode || '',
            fundName: fundName || '',
            fundType: fundType || '',
            subType: subType || '',
            sortField: sortFieldVar,
            sortOrder: 'desc'
        };

        // 构建查询参数字符串
        const queryString = $.param(queryParams);
        
        // 使用window.location直接下载文件，而不是Ajax
        window.location.href = `/api/funds/export?${queryString}`;
    }

    function addNewFund() {
        const fundCode = $('#addFundCode').val();
        const fundName = $('#addFundName').val();
        const fundType = $('#addFundType').val();
        const subType = $('#addSubType').val();
        const frontEndPurchaseFee = $('#addFrontEndPurchaseFee').val();
        const annualManagementFee = $('#addAnnualManagementFee').val();
        const brokerCommissionRate = $('#addBrokerCommissionRate').val();
        const freeFeeMinDays = parseInt($('#addFreeFeeMinDays').val(), 10);

        // if (!validateFundCode(fundCode)) {
        //     customAlert('代码必须是6位数字');
        //     return;
        // }

        if (fundName.trim() === '') {
            customAlert('名称不能为空');
            return;
        }

        if (fundType === '') {
            customAlert('标的类型不能为空');
            return;
        }

        if (subType === '') {
            customAlert('标的子类型不能为空');
            return;
        }

        if (isNaN(freeFeeMinDays) || freeFeeMinDays < 0) {
            customAlert('免手续费最低持有天数必须是自然数');
            return;
        }

        const newFund = {
            fundCode: fundCode,
            fundName: fundName,
            fundType: fundType,
            subType: subType,
            frontEndPurchaseFee: frontEndPurchaseFee ? parseFloat(frontEndPurchaseFee) : null,
            annualManagementFee: annualManagementFee ? parseFloat(annualManagementFee) : null,
            brokerCommissionRate: brokerCommissionRate ? parseFloat(brokerCommissionRate) : null,
            freeFeeMinDays: freeFeeMinDays
        };

        $.ajax({
            url: `/api/funds/addFund`,
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(newFund),
            success: function(data) {
                clearForm();
                // 通过触发事件关闭模态框
                $('#addFundModal').modal('hide');
                // 重新获取数据
                fetchFunds();
                customAlert('新增成功');
            },
            error: function(xhr, status, error) {
                console.error('Error adding fund:', error);
                customAlert('新增标的失败');
            }
        });
    }

    function validateFundCode(fundCode) {
        return /^\d{6}$/.test(fundCode);
    }

    function clearForm() {
        $('#addFundForm')[0].reset();
    }

    $('#syncNetValuesButton').on('click', syncNetValues);
    $('#exportExcelButton').on('click', exportToExcel);
    $('#fetchFundsButton').on('click', fetchFunds);
    $('#saveAddFund').on('click', addNewFund);
    $('#saveEditFund').on('click', saveEditFund);
    
    // 在新增基金模态框隐藏时启用类型选择框
    $('#addFundModal').on('hidden.bs.modal', function () {
        $('#addFundType').prop('disabled', false);
    });
    
    // 在编辑基金模态框隐藏时启用类型选择框
    $('#editFundModal').on('hidden.bs.modal', function () {
        $('#editFundType').prop('disabled', false);
    });

    $('#itemsPerPage').on('change', function() {
        handleSizeChange(parseInt($(this).val(), 10));
    });
    $('#timeRange').on('change', fetchFunds);

    $('#pPage').on('click', function(e) { 
        e.preventDefault();  // 添加：防止默认行为
        if (currentPage > 1) {
            handleCurrentChange(currentPage - 1); 
        }
    });
    
    $('#nPage').on('click', function(e) { 
        e.preventDefault();  // 添加：防止默认行为
        if (currentPage < totalPages) {
            handleCurrentChange(currentPage + 1); 
        }
    });

    // 使用事件委托来绑定编辑按钮的点击事件
    $('#fundTableBody').on('click', 'button[id^="edit-"]', function() {
        const fundData = $(this).data('fund');
        $('#editFundId').val(fundData.id);
        $('#editFundCode').val(fundData.fundCode);
        $('#editFundName').val(fundData.fundName);
        $('#editFundType').val(fundData.fundType);
        // 更新子类型选项
        updateSubTypeOptions(fundData.fundType, $('#editSubType'));
        $('#editSubType').val(fundData.subType);
        // 禁用类型选择框，使其在编辑时不可修改
        $('#editFundType').prop('disabled', true);
        // 允许修改标的子类型
        $('#editSubType').prop('disabled', false);
        $('#editFrontEndPurchaseFee').val(fundData.frontEndPurchaseFee);
        $('#editAnnualManagementFee').val(fundData.annualManagementFee);
        $('#editBrokerCommissionRate').val(fundData.brokerCommissionRate);
        $('#editFreeFeeMinDays').val(fundData.freeFeeMinDays);
        $('#editFundModal').modal('show');
    });

    $('#fundTableBody').on('click', 'button[id^="delete-"]', function() {
        const fundId = $(this).attr('id').split('delete-')[1];
        if (confirm('确定要删除该标的吗？')) { // 添加确认对话框
            $.ajax({
                url: `/api/funds/deleteFund/${fundId}`,
                type: 'POST',
                success: function() {
                    // 重新获取数据
                    fetchFunds();
                    customAlert('删除成功'); // 使用自定义提示框替代confirm
                },
                error: function(xhr, status, error) {
                    console.error('Error deleting fund:', error);
                    customAlert('删除失败'); // 添加错误提示
                }
            });
        }
    });

    $('#fundTableBody').on('click', 'button[id^="show-"]', function() {
        const fundId = $(this).attr('id').split('show-')[1];
        $.ajax({
            url: `/api/funds/${fundId}`,
            type: 'GET',
            success: function(data) {
                $('#detailFundCode').text(data.fundCode);
                $('#detailFundName').text(data.fundName);
                $('#detailFundType').text(fundTypeMap[data.fundType] || '未知');
                const fullType = data.fundType + '_' + data.subType;
                $('#detailSubType').text(subTypeMap[fullType] || '未知');
                $('#detailFrontEndPurchaseFee').text(data.frontEndPurchaseFee || '');
                $('#detailAnnualManagementFee').text(data.annualManagementFee || '');
                $('#detailBrokerCommissionRate').text(data.brokerCommissionRate || '');
                $('#detailFreeFeeMinDays').text(data.freeFeeMinDays || 0);
                $('#detailNetValue').text(data.netValue || '');
                $('#detailCreatedTime').text(data.createdTime || '');
                $('#detailUpdatedTime').text(data.updatedTime || '');
                $('#detailStatus').text(data.status === '1' ? '有效' : '无效');
                
                // 显示净值图表
                renderNetValueChart(data);
                
                // 填充各时段表现表格
                renderPerformanceTable(data);
                
                $('#detailFundModal').modal('show');
            },
            error: function(xhr, status, error) {
                console.error('Error fetching fund details:', error);
                customAlert('获取基金详情失败');
            }
        });
    });

    function sortTable(sortField) {
        const sortOrder = funds[0][sortField] > funds[1][sortField] ? 'asc' : 'desc';
        funds.sort((a, b) => {
            if (a[sortField] < b[sortField]) return sortOrder === 'asc' ? -1 : 1;
            if (a[sortField] > b[sortField]) return sortOrder === 'asc' ? 1 : -1;
            return 0;
        });
        renderFundTable(funds);
    }

    function renderNetValueChart(netValues) {
        const ctx = $('#netValueChart').get(0).getContext('2d');

        // 如果之前存在Chart实例，则销毁它
        if (window.netValueChart && window.netValueChart.destroy) {
            window.netValueChart.destroy();
        }

        // 提取日期和净值数据
        const labels = [
            '当前',
            '1周前',
            '1月前',
            '3月前',
            '6月前',
            '1年前',
            '2年前',
            '3年前',
            '5年前'
        ].reverse();

        const values = [
            netValues.netValue,
            netValues.netValue1w,
            netValues.netValue1m,
            netValues.netValue3m,
            netValues.netValue6m,
            netValues.netValue1y,
            netValues.netValue2y,
            netValues.netValue3y,
            netValues.netValue5y
        ].reverse();

        // 提取盈亏比数据
        const profitLossRatios = [
            netValues.profitLossRatio1w,
            netValues.profitLossRatio1m,
            netValues.profitLossRatio3m,
            netValues.profitLossRatio6m,
            netValues.profitLossRatio1y,
            netValues.profitLossRatio2y,
            netValues.profitLossRatio3y,
            netValues.profitLossRatio5y
        ].reverse();

        // 创建新的Chart实例并赋值给全局变量
        window.netValueChart = new Chart(ctx, {
            type: 'bar', // 默认类型设为bar，净值使用柱状图
            data: {
                labels: labels,
                datasets: [{
                    label: '净值',
                    data: values.map(v => v ? parseFloat(v) : null),
                    type: 'bar', // 明确指定为柱状图
                    backgroundColor: 'rgba(75, 192, 192, 0.7)',
                    borderColor: 'rgba(75, 192, 192, 1)',
                    borderWidth: 1,
                    yAxisID: 'y-axis-right' // Y轴ID对应右侧Y轴
                }, {
                    label: '盈亏比',
                    data: profitLossRatios.map(v => v ? parseFloat(v) : null),
                    type: 'line', // 明确指定为折线图
                    borderColor: 'rgba(255, 99, 132, 1)',
                    backgroundColor: 'rgba(255, 99, 132, 0.2)',
                    fill: false, // 折线图不填充
                    tension: 0.3, // 折线平滑度
                    yAxisID: 'y-axis-left' // Y轴ID对应左侧Y轴
                }]
            },
            options: {
                responsive: true,
                scales: {
                    x: {
                        display: true,
                        title: {
                            display: true,
                            text: '时间'
                        }
                    },
                    'y-axis-left': { // 左侧Y轴配置（盈亏比）
                        type: 'linear',
                        display: true,
                        position: 'left',
                        title: {
                            display: true,
                            text: '盈亏比(%)'
                        }
                    },
                    'y-axis-right': { // 右侧Y轴配置（净值）
                        type: 'linear',
                        display: true,
                        position: 'right',
                        title: {
                            display: true,
                            text: '净值'
                        },
                        grid: {
                            drawOnChartArea: false // 确保右侧Y轴网格线不会覆盖左侧Y轴
                        }
                    }
                },
                plugins: {
                    legend: {
                        position: 'top', // 图例位置
                    },
                    tooltip: {
                        callbacks: {
                            label: function(context) {
                                let label = context.dataset.label || '';
                                if (label) {
                                    label += ': ';
                                }
                                if (context.parsed.y !== null) {
                                    if (context.datasetIndex === 0) {
                                        // 净值数据保留4位小数
                                        label += context.parsed.y.toFixed(4);
                                    } else {
                                        // 盈亏比数据保留2位小数并添加百分号
                                        label += context.parsed.y.toFixed(2) + '%';
                                    }
                                }
                                return label;
                            }
                        }
                    }
                }
            }
        });
    }

    function renderPerformanceTable(netValues) {
        const tableBody = $('#detailPerformanceTable');
        tableBody.empty();
        
        // 定义时段数据
        const periods = [
            { label: '1周', prefix: 'netValue1w' , fix: 'NetValue1w'},
            { label: '1月', prefix: 'netValue1m' , fix: 'NetValue1m'},
            { label: '3月', prefix: 'netValue3m' , fix: 'NetValue3m'},
            { label: '6月', prefix: 'netValue6m' , fix: 'NetValue6m'},
            { label: '1年', prefix: 'netValue1y' , fix: 'NetValue1y'},
            { label: '2年', prefix: 'netValue2y' , fix: 'NetValue2y'},
            { label: '3年', prefix: 'netValue3y' , fix: 'NetValue3y'},
            { label: '5年', prefix: 'netValue5y' , fix: 'NetValue5y'}
        ];
        
        periods.forEach(period => {
            const tr = $('<tr>');
            
            // 时段
            tr.append($('<td>').text(period.label));
            
            // 净值
            const netValue = netValues[period.prefix];
            tr.append($('<td>').text(netValue ? parseFloat(netValue).toFixed(4) : ''));
            
            // 最大净值
            const maxValue = netValues[`max${period.fix}`];
            tr.append($('<td>').text(maxValue ? parseFloat(maxValue).toFixed(4) : ''));
            
            // 最小净值
            const minValue = netValues[`min${period.fix}`];
            tr.append($('<td>').text(minValue ? parseFloat(minValue).toFixed(4) : ''));
            
            // 同比
            const yoyValue = netValues[`${period.prefix}Yoy`];
            tr.append($('<td>').text(yoyValue ? parseFloat(yoyValue).toFixed(2) + '%' : ''));
            
            // 最大同比
            const maxYoyValue = netValues[`max${period.fix}Yoy`];
            tr.append($('<td>').text(maxYoyValue ? parseFloat(maxYoyValue).toFixed(2) + '%' : ''));
            
            // 最小同比
            const minYoyValue = netValues[`min${period.fix}Yoy`];
            tr.append($('<td>').text(minYoyValue ? parseFloat(minYoyValue).toFixed(2) + '%' : ''));
            
            // 盈亏比
            const profitLossRatio = netValues[`profitLossRatio${period.label.replace('年', 'y').replace('月', 'm').replace('周', 'w')}`];
            tr.append($('<td>').text(profitLossRatio ? parseFloat(profitLossRatio).toFixed(2) + '%' : ''));
            
            tableBody.append(tr);
        });
    }

    // 在页面加载时调用 fetchFunds 函数以获取并渲染数据
    showLoading();
    fetchFunds();
});

// 根据基金类型设置默认费率
function setDefaultFeesByType(fundType, frontEndPurchaseFeeElement, brokerCommissionRateElement) {
    // 如果是股票(类型4)，前端申购费默认0，券商佣金费率默认0.05
    if (fundType === '4') {
        if (!frontEndPurchaseFeeElement.val()) {
            frontEndPurchaseFeeElement.val('0');
        }
        if (!brokerCommissionRateElement.val()) {
            brokerCommissionRateElement.val('0.05');
        }
    } 
    // 如果是基金(类型3)相关的子类型，券商佣金费率默认0
    else if (fundType === '3') {
        if (!brokerCommissionRateElement.val()) {
            brokerCommissionRateElement.val('0');
        }
    }
}

// 显示加载状态
function showLoading() {
    $('#loadingModal').modal('show');
}

// 隐藏加载状态
function hideLoading() {
    $('#loadingModal').modal('hide');
}

// 在文件末尾添加标的类型转换函数
function getFundTypeText(type) {
    const fundTypes = {
        '1': '稳健灵活',
        '2': '黄金',
        '3': '基金',
        '4': '股票',
        '5': 'ETF'
    };
    return fundTypes[type] || '';
}

function getFundTypeName(type) {
    switch (type) {
        case '1': return '稳健灵活';
        case '2': return '黄金';
        case '3': return '基金';
        case '4': return '股票';
        case '5': return 'ETF';
        default: return '未知';
    }
}